/** @jsxImportSource @emotion/react */
import * as React from "react";
import {
    CCell, Cell, TableRow,
} from "customize-easy-ui-component";
import {DirectLink} from "../../../routing/Link";
// import {RecordInputConfig, RecordIspArea, RecordSelfSplit,itemResTransform, } from "../../common/config";
import {EvaluateItemConfig, itemResTransformEval, RecordEvalArea} from "../config";
import ignoreEvent from "@uppy/dashboard/lib/utils/ignoreEvent";

/** 【还未做】       格式化版原始记录 的生成。 类似评估配置模式的。
 *          @   临时这样
 * 对比正式报告： 原始记录的内容会多点的。 列数。
 * */
export const useLikeElevatorSafeEval= ({itRes, ItemArs, model,ver, repNo, rssCB}
         :{itRes:any, ItemArs:RecordEvalArea[], model:string,ver:string, repNo:string,rssCB?:({itRes,seq,area,et, n,ox,oy,oz,nowColumns,big,titl} :any)=>React.ReactNode}
) => {
    const renderIspContent =React.useMemo(() => {
        let seq = 0;
        let htmlTxts =[] as React.ReactNode[];
        let ox: string;
        let oy: string;
        let oz: string='';
        let big: string;
        let titl: string | React.ReactNode;
        let sub: string='';
        ItemArs?.forEach((area, b) => {
            //列跨 span X.y的X列这里就不要跨越area范围了；以一个tag对应的area.items最大搜索区域来决定各个列span;当前已经为x,y,z,t分配的具体行数多少。
            //配置已经敲定了有几行， td跨越几行
            area && area.items.forEach((et:EvaluateItemConfig, n:number) => {
                if(et){
                    seq += 1;
                    let nowColumns;    //有几列， 得依据范围内的全部项目来判定各个列到底会跨越几行的（自拆分项目会有多方=行的），x.y.z.t分别决定。
                    if(et.y) nowColumns=2;
                    else if(et.x) nowColumns=1;
                    else throw new Error(`非法列设置gs`);
                    big=et.big??big;        //像缓存一样 传递下去，按最左边序号顺序上托没改动的就是不变。
                    ox=et.x??ox;
                    oy=et.y??oy;
                    // @ts-ignore
                    titl=(et.titl??titl) as (string | React.ReactNode);

                    //监督检验项目: 印象是 前面最多有4列的？
                    //4个项目特殊：若遇见自扩展分拆项形式的项目： 第一个结论 【】数据扩充{结论字段：‘3.9Res’}3.11。3Res’ 3.12.4Res’ 5Res’;也别名字。
                    let itemRowRender=[];

                        itemRowRender[0] =<React.Fragment key={n}>
                            <TableRow >
                                <CCell key={12}>{seq}</CCell>
                                <CCell key={1}  colSpan={1===nowColumns? 4:1}>
                                    <>{ox}{big}</>
                                </CCell>
                                <CCell key={2}
                                       colSpan={2===nowColumns? 1:1}
                                >{ox}.{oy}{nowColumns>=2 && titl}{et.iclas}</CCell>
                                <CCell key={3}
                                       colSpan={3===nowColumns? 2:1}
                                >{ox}.{oy}.{oz}{nowColumns>3 && sub}</CCell>
                                <CCell key={11}
                                >{ox}.{oy}.{oz}.</CCell>
                                <CCell key={13}
                                >{ox}.{oy}</CCell>
                                <Cell key={4}>{et.desc}</Cell>
                                <CCell key={5}>{itRes?.[et.name]}</CCell>
                                <CCell key={6}>{itemResTransformEval(itRes,et)}</CCell>
                                <CCell key={10}>{itRes?.[et.name+'_D'] || ''}</CCell>
                                <CCell key={8}>{itRes?.[et.name+'_S'] || ''}</CCell>
                            </TableRow>
                        </React.Fragment>;
                    const rowsBigArea=<React.Fragment key={seq}>
                        <DirectLink href={`/report/${model}/ver/${ver}/${repNo}/__ItemArs-${area.tag}`}>
                            {itemRowRender}
                        </DirectLink>
                    </React.Fragment>;
                    htmlTxts.push(rowsBigArea);    //原先在htmlTxts.push(itemRowRender);bigItemRowCnt++;前面就处理的
                }
            });
        });

        return  htmlTxts;
    }, [itRes,repNo,model,ver,ItemArs]);
    return { renderIspContent };
};
